package cn.qn.service.image;

import cn.qn.moudle.image.Image;
import cn.qn.properties.OSSPolicy;
import cn.qn.properties.OSSProperties;

import java.io.InputStream;

public interface ImageService {
    /**
     * 新增图片
     * @param image
     * @return
     */
    Image insert(Image image);

    /**
     * 通过ID查询
     * @param id
     * @return
     */
    Image findById(Integer id);

    /**
     * 通过ID删除
     * @param id
     * @return
     */
    void delete(Integer id);

    /**
     * 获取上传目录系统参数
     * @param type  来源(目前只有app在调用):    app:来自app上传;
     * @param filePath 存放路径
     * @return
     */
    OSSPolicy generatePolicy(String type, String filePath);

    OSSPolicy generatePrivatePolicy(String filePath);

    String generatePresignedUrl(String objectKey);

    void deleteObject(String objectKey);

    void uploadObject(String objectKey, byte[] byteArray);

    void uploadPrivateObject(String objectKey, InputStream input);

    void uploadPrivateObject(String objectKey, byte[] byteArray);

    void uploadObject(String objectKey, InputStream input);

    InputStream downloadPrivateObject(String objectKey);

    String getObjectPrefix();

    String getHost();

    String generateFileName();

    OSSProperties getOSSProperties(String filePath);

    /**
     * 通过图片ID查询图片完整路径
     * @param imageId
     * @return
     */
    String getFullPathByImageId(Integer imageId);

    /**
     * 删除app上传的图片
     * @param objectKey
     * @return
     */
    Boolean deleteAppObject(String objectKey);
}
